<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // function 构造函数名(形参1, 形参2, 形参3) { // 构造函数的形参与对象的普通属性是一般一致的
        //     this.属性名1 = 形参1;
        //     this.属性名2 = 形参2; // 属性的值，一般是通过同名的形参来赋值的
        //     this.属性名3 = 形参3;
        //     this.方法名 = function () {

        //     };
        // }
        // // 调用
        // const obj = new 构造函数名(实参1，实参2，实参3)

        // // 简记
        // function 构造函数名() {
        //     this.属性 = 值;  // 当前的这个对象的
        //     this.方法 = function () { }
        // }
        // new 构造函数名();


        function Person(name, age, gender) {
            this.name = name
            this.age = age
            this.gender = gender
            // 如果构造函数的方法想传参，形参写在这里
            this.sayHi = function (msg) {
                console.log(msg)
            }
            // 构造函数省略了return
        }
        // 调用 ==> new
        const p = new Person('东东', 18, '男')
        console.log(p)
        // 获取属性
        console.log(p.name)
        // 调用方法
        p.sayHi('hello')


        // 1. 构造函数，相当于一个模板，可以创建一系列具有相同属性和方法的对象
        // 2. 通过构造函数创建对象的过程就叫做实例化 ==> new出一个对象的过程
        // 3. 创建好的这个对象 ==> 实例 / 实例对象


        // 注意:
        // 1. 构造函数名字首字母要大写
        // 2. 构造函数里 属性和方法前面必须添加 this
        // 2. 构造函数不需要 return 就可以返回结果
        // 3. 我们调用构造函数 必须使用 new
    </script>
</body>

</html>